/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.ativos.facade;

import br.uniceub.fsw.ativos.dao.*;
import br.uniceub.fsw.ativos.vo.*;
import java.io.File;
import java.util.*;
import java.sql.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUpload;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 *
 * @author ra20603490
 */
public class AtivoFacade {

    private AtivoDAO dao;
    private ProjetoDAO projDao;
    private CategoriaDAO catDao;
    private AtivoDAO ativoDao;

    public AtivoFacade() {
        dao = new AtivoDAO();
        projDao = new ProjetoDAO();
        catDao  = new CategoriaDAO();
        ativoDao = new AtivoDAO();
    }

    public String operacao(HttpServletRequest req){
        String oper = req.getParameter("operacao");
        if (oper == null) {
            return "";
        }
       /* if (oper.equals("inserir")) {
            return "alert('" + inserir(req) + "');";
        }
        if (oper.equals("alterar")) {
            return "alert('" + alterar(req) + "');";
        }
        if (oper.equals("apagar")) {
            return "alert('" + apagar(req) + "');";
        }*/
        return "";
    }
    public Integer consultar(HttpServletRequest req){
        Integer cat = new Integer(req.getParameter("categoria"));
        return cat;
    }

    public String inserir(HashMap lista) {
        StringBuffer sb = new StringBuffer();
        String noAtivo = (String) lista.get("noAtivo");
        String projeto = (String) lista.get("projeto");
        String dsAtivo = (String) lista.get("dsAtivo");
        String categoria = (String) lista.get("categoria");
        //String autores = req.getParameter("autores");
        //String tipo = req.getParameter("tipo");

        AtivoVO ativo = new AtivoVO();
        ativo.setNoAtivo(noAtivo);
        ativo.setDsAtivo(dsAtivo);

        ProjetoVO proj = new ProjetoVO();
        proj.setIdProjeto(new Integer(projeto));
        ativo.setProjeto(proj);

        /*UsuarioVO usu = new UsuarioVO();
        usu.setNoUsuario(autores);

        AutorVO aut = new AutorVO();
        aut.setUsuario(usu);
        ativo.setAutor(aut);*/

        CategoriaVO cat = new CategoriaVO();
        cat.setIdCategoria(new Integer(categoria));
        ativo.setCategoria(cat);

       /* CategoriaVO tip = new CategoriaVO();
        tip.setDsCategoria(tipo);
        ativo.setCategoria(tip);

        VersaoVO arq = new VersaoVO();
        arq.setEndereco(arquivo);
        ativo.setVersao(arq);*/

        if (dao.salvar(ativo)) {
            sb.append("<script>alert('Ativo INSERIDO com sucesso')</script>");
            return "alert('Ativo INSERIDO com sucesso');";
        } else {
            return "Erro ao tentar inserir";
        }
    }
    public String inserirVersao(String caminho){
        dao.salvarVersao(caminho);
        return "Arquivo inserido com sucesso";
    }

    public String getComboProjeto() {
        StringBuffer sb = new StringBuffer();
        ArrayList aList = projDao.consultarTodos();
        sb.append("<SELECT class='dropdownlistfocus' NAME='projeto' id='projeto'>");
        sb.append("<OPTION VALUE='0'>Escolha um Projeto</OPTION>");
        for (int i = 0; i < aList.size(); i++) {
            ProjetoVO p = (ProjetoVO) aList.get(i);
            sb.append("<OPTION VALUE='" + p.getIdProjeto().toString() + "'>" + p.getNoProjeto() + "</OPTION>");
        }
        sb.append("</SELECT>");

        return sb.toString();
    }

    public String getComboCategoria() {
        StringBuffer sb = new StringBuffer();
        ArrayList aList = catDao.consultarTodas();
        sb.append("<SELECT class='dropdownlistfocus' NAME='categoria' id='categoria' onchange='javascript:comboSubCat()'>");
        sb.append("<OPTION VALUE='0'>Escolha uma Categoria</OPTION>");
        for (int i = 0; i < aList.size(); i++) {
            CategoriaVO c = (CategoriaVO) aList.get(i);
            sb.append("<OPTION VALUE='" + c.getIdCategoria().toString() + "'>" + c.getNoCategoria() + "</OPTION>");
        }
        sb.append("</SELECT>");

        return sb.toString();
    }
    /*
    public String getComboTipo(Integer id) {
        StringBuffer sb = new StringBuffer();
        ArrayList aList = catDao.consultarSubCategoria(id);
        sb.append("<SELECT NAME='tipo'>");
        sb.append("<OPTION VALUE='0'>Escolha uma Categoria</OPTION>");
        for (int i = 0; i < aList.size(); i++) {
            CategoriaVO c = (CategoriaVO) aList.get(i);
            sb.append("<OPTION VALUE='" + c.getIdCategoria().toString() + "'>" + c.getNoCategoria() + "</OPTION>");
        }
        sb.append("</SELECT>");

        return sb.toString();
    }
     */

    public String getConsultaAtivos(String noAtivo, String idProjeto, String idCategoria) {
        StringBuffer sb = new StringBuffer();
        ArrayList aList = ativoDao.consultarAtivo(noAtivo, idProjeto, idCategoria, null);
        for (int i = 0; i < aList.size(); i++) {
            AtivoVO a = (AtivoVO) aList.get(i);
            sb.append("<TR><TD>"+ a.getNoAtivo() +"</TD><TD>"+ a.getDsAtivo() +"</TD><TD>"+ a.getProjeto().getNoProjeto() +"</TD><TD align='center'><a href='checkout.jsp?id="+ a.getIdAtivo() +"'>checkout</a></TD></TR>");
        }
        return sb.toString();
    }

    /*public String alterar(HttpServletRequest req) {
        String idAtivo = req.getParameter("idAtivo");
        String noAtivo = req.getParameter("noAtivo");
        Ativo t = new Ativo();
        t.setIdAtivo(new Integer(idAtivo));
        t.setNoAtivo(noAtivo);
        if (dao.alterar(t)) {
            return "Ativo ALTERADO com sucesso";
        } else {
            return "Erro ao tentar alterar";
        }
    }

    public String apagar(HttpServletRequest req) {
        String idAtivo = req.getParameter("idAtivo");
        Ativo t = new Ativo();
        t.setIdAtivo(new Integer(idAtivo));
        if (dao.apagar(t)) {
            return "Ativo APAGADO com sucesso";
        } else {
            return "Erro ao tentar apagar";
        }
    }

    public String consultar(HttpServletRequest req) {
        String parteNome = (req.getParameter("parteNome") == null ? "" : req.getParameter("parteNome"));
        StringBuffer sb = new StringBuffer();
        ArrayList aList = dao.consultarPorNome(parteNome);
        for (int i = 0; i < aList.size(); i++) {
            Ativo t = (Ativo) aList.get(i);
            sb.append("<form method='post' OnSubmit='return validar(this)'>");
            sb.append("<tr>");
            sb.append("<td>");
            sb.append("<input type='hidden' name='operacao' value='x'>");
            sb.append("<input type='text' name='idAtivo' value='" + t.getIdAtivo() + "' readonly size='5'>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input type='text' name='noAtivo' value='" + t.getNoAtivo() + "' size='30'>");
            sb.append("</td>");
            sb.append("<td>");
            sb.append("<input type='submit' name='btAlterar' value='Alterar' OnClick='operacao.value=\"alterar\"'>");
            sb.append("<input type='submit' name='btApagar' value='Apagar' OnClick='operacao.value=\"apagar\"'>");
            sb.append("</td>");
            sb.append("</tr>");
            sb.append("</form>");
        }
        return sb.toString();
    }*/

}
